package com.tdam2013.grupo08.widget;

import java.util.Date;

import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.preference.PreferenceManager;
import android.widget.RemoteViews;

import com.tdam2013.grupo08.R;
import com.tdam2013.grupo08.data.DataBaseHelper;
import com.tdam2013.grupo08.helpers.ContactoHelper;
import com.tdam2013.grupo08.models.MensajeWeb;
import com.tdam2013.grupo08.network.MessageSenderService;

public class MyWidgetIntentReceiver extends BroadcastReceiver {

	
	RecibirMensajesAsyncTask recibirMensajesTask;
	Context currentContext;
	RemoteViews currentRemoteView;
	String userName;
	String pass;
	
	@Override
	public void onReceive(Context context, Intent intent) {
		if (intent.getAction().equals(WidgetUtils.WIDGET_UPDATE_ACTION)) {
			updateWidgetPictureAndButtonListener(context);
		}
		if(intent.getAction().equals(WidgetUtils.WIDGET_ENTER_APP)){
			enterWidgetPictureListener(context);
		}
	}

	public void updateWidgetPictureAndButtonListener(Context context) {
		currentRemoteView = new RemoteViews(context.getPackageName(), 	R.layout.widget_layout);
		
		currentContext = context;
		
		SharedPreferences myPreferences = PreferenceManager.getDefaultSharedPreferences(context);
		userName = myPreferences.getString("userName", "");
		pass = myPreferences.getString("userPass", "");
		
		if (userName.compareTo("")==0) {
			currentRemoteView.setTextViewText(R.id.desc, "Sin usuario!!");
			MyWidgetProvider.pushWidgetUpdate(currentContext.getApplicationContext(), currentRemoteView);
		} else {
			
			//recibo mensajes
			recibirMensajesTask = new RecibirMensajesAsyncTask();
			recibirMensajesTask.execute(userName, pass);
			
		}
			
	}
	
	private void enterWidgetPictureListener(Context context) {
		RemoteViews remoteViews = new RemoteViews(context.getPackageName(),	R.layout.widget_layout);
		
		remoteViews.setTextViewText(R.id.desc, "No hay mensajes");		
		
		remoteViews.setOnClickPendingIntent(R.id.contentContainer,
				MyWidgetProvider.contenedorPendingIntent(context));
		
		MyWidgetProvider.pushWidgetUpdate(context.getApplicationContext(),
				remoteViews);
		
	}
	
	protected class RecibirMensajesAsyncTask extends AsyncTask<String, Integer, Boolean>
    {
		String nombreUsuario;
    	String passUsuario;
    	
    	@Override
		protected Boolean doInBackground(String... params) 
		{
    		nombreUsuario = params[0];
    		passUsuario = params[1];
    		
			return MessageSenderService.hayNuevosMensajes(new Date(), nombreUsuario, passUsuario, currentContext);
		}
    	
    	@Override
        protected void onPostExecute(Boolean result)
        {
            super.onPostExecute(result);
            
            if (result) {
            	
            	DataBaseHelper bd=new DataBaseHelper(currentContext);
				MensajeWeb msj =bd.obtenerUltimoMensajeParaWidget(nombreUsuario);
				
				msj.setContacto(ContactoHelper.loadContacto(currentContext.getContentResolver(), msj.getContactoId(), currentContext));
				String nombreContacto = msj.getContacto().getNombre() + " (" + msj.getContacto().getNombreUsuarioWeb() + ")";
			
				currentRemoteView.setTextViewText(R.id.desc, nombreContacto+": "+msj.getMensaje());

			} else {
				currentRemoteView.setTextViewText(R.id.desc, "No hay mensajes nuevos.");
			}
            
    		currentRemoteView.setOnClickPendingIntent(R.id.sync_button,
    				MyWidgetProvider.buildButtonPendingIntent(currentContext));

    		MyWidgetProvider.pushWidgetUpdate(currentContext.getApplicationContext(),
    				currentRemoteView);

        };
    }
}
